CC = g++
SRC = ./src
INCDIR = ./include
TEST = ./test
CPPFLAGS = -I$(INCDIR) -std=c++11

run : $(TEST)/input.data $(TEST)/main
	$(TEST)/main
	$(RM) out.data
$(TEST)/main : $(TEST)/input.data $(TEST)/main.o $(SRC)/TimeIntegrator.o
	$(CC) -o $@ $(TEST)/main.o $(SRC)/TimeIntegrator.o -llapacke
$(TEST)/main.o : $(TEST)/main.cpp $(INCDIR)/TimeIntegratorFactory.h
	$(CC) -c $(CPPFLAGS) $< -o $(TEST)/main.o
$(SRC)/TimeIntegrator.o : $(SRC)/TimeIntegrator.cpp $(INCDIR)/TimeIntegrator.h $(INCDIR)/Function.h
	$(CC) -c $(CPPFLAGS) $< -o $(SRC)/TimeIntegrator.o

.PHONY : clean
clean :
	$(RM) $(TEST)/main $(TEST)/*.o $(SRC)/*.o out.data
realclean :
	make clean
	$(RM) run/IVP1/*.data run/IVP2/*.data run/*.data
